There are currently various products that can be employed to secure access to data. For example, Dell Credant is a technology that can be employed to ensure that only specified users can access data and that such access conforms to specified limitations such as by preventing a user from using copy and paste functionality when viewing a particular document. However, to enforce these limitations, the current products will only allow the data to be accessed within customized applications that are configured to prevent the data from being saved, copied, or otherwise shared. From the user's perspective, these products are therefore undesirable because the user does not have the ability to access the data from an application of choice. For example, with these products, the user typically would not be able to open a word processing document using Microsoft Word, but would be required to employ a customized word processing application that does not implement copy and paste, save, or other functionality that may allow the content of the document to become improperly accessible. In addition to this burden on the user, there is also a burden on the developers to create these custom applications that can be used to implement the specified limitations on user access.
Native Client is a technology for running native complied code in a browser. For example, Native Client can allow an application written in C or C++ to be compiled, linked, targeted, and executed within the browser environment. To enable this, Native Client includes a toolchain (i.e., a compiler, a linker, an assembler, etc.) that are used to convert native source code into a module that can be executed within the browser. The Native Client toolchain can produce non-portable modules (referred to as nexe modules) which are architecture dependent or portable modules (referred to as PNaCl or pexe modules) which are not.